package com.tom.architect.day01.simple7;


import com.tom.architect.day01.Utils;

/**
 * Description:
 * TODO 尝试兼容RxJava。
 */
public abstract class HttpCallBack<T> implements EngineCallback {
    @Override
    public void onSuccess(String result) {
        // 做解析：String-->Bean
        // 不能直接用 Gson 去解析，通过配置去解析, 解耦
        try {
            Converter converter = HttpUtils.mConfig.converter;
            Class<T> resultT = (Class<T>) Utils.analysisClazzInfo(this);
            T resultObj = converter.convert(result, resultT);
            onSuccess(resultObj); // 返回解析后的bean
        } catch (Exception e){
            // 操作异常，解析，访问数据正常，但是拿到结果后操作出错
            onFailure(e);
        }
    }

    protected abstract void onSuccess(T resultObj);
}
